package com.turing.post.tuxedo.util;

import java.util.HashMap;

/**
 * 商户交易接入子系统返回码定义
 * 
 * @author yxb
 * 
 */
public class TuxedoRespCode {
	private final static HashMap<String, String> _msgmap = new HashMap<String, String>();
	private final static HashMap<String, String> _msgsubsysmap = new HashMap<String, String>();

	private static void initCardRespCodeMap() {
	}

	/**
	 * 初始化_msgmap,在本类第一次被加载之后
	 */
	static {
		_msgmap.put(TuxedoRespCode.RC_SUCCESS, "业务成功");
		_msgmap.put(TuxedoRespCode.RC_ISSUE, "无此发卡行");
		_msgmap.put(TuxedoRespCode.RC_INVALID, "卡无效");
		_msgmap.put(TuxedoRespCode.RC_EXPIRED, "过期的卡");
		_msgmap.put(TuxedoRespCode.RC_LOSSED, "丢失卡");
		_msgmap.put(TuxedoRespCode.RC_LOCKED, "卡已经锁定");
		_msgmap.put(TuxedoRespCode.RC_LIMIT, "受限制的卡");
		_msgmap.put(TuxedoRespCode.RC_PWDERR, "不正确的PIN");
		_msgmap.put(TuxedoRespCode.RC_NPWDERR, "新密码错");
		_msgmap.put(TuxedoRespCode.RC_PARAMETER, "格式错误");
		_msgmap.put(TuxedoRespCode.RC_OverOne_Paid, "已超过单笔消费限制");
		_msgmap.put(TuxedoRespCode.RC_DayNum_Paid, "已超过日消费次数限制");
		_msgmap.put(TuxedoRespCode.RC_DayAmount_Paid, "已超日消费金额限制");
		_msgmap.put(TuxedoRespCode.RC_No_Deposit, "不允许充值交易");
		_msgmap.put(TuxedoRespCode.RC_No_DepositBranchNo, "未设置商户充值归属销售机构");
		_msgmap.put(TuxedoRespCode.RC_DepositAmountOverLimit, "充值金额超限");
		_msgmap.put(TuxedoRespCode.RC_INVALID_TRANS, "无效交易");

		initCardRespCodeMap();
	}

	/**
	 * 根据响应码查询响应信息
	 * 
	 * @param respCode
	 * @return
	 */
	public static String getRespCodeMessage(String respCode) {
		String msg = _msgmap.get(respCode);
		return (msg == null) ? respCode : msg;
	}

	/**
	 * 取子系统到TUXPMBS的错误码映射
	 * 
	 * @param rspCode
	 * @return
	 */
	public static String getMappedRespCode(String rspCode) {
		return _msgsubsysmap.get(rspCode);
	}

	/*
	 * 01 查发卡行 04 没收卡 05 不予承兑 10 部分承兑 31 银联不支持的银行 34 有作弊嫌疑 38 超过允许的PIN 试输入 40
	 * 请求的功能尚不支持 43 被窃卡 58 不允许终端进行的交易 61 超出取款金额限制 65 超出消费次数限制 66 受卡方呼受理方安全保密部门
	 * 68 收到的回答太迟 75 允许的输入PIN 次数超限 91 发卡行或银联不能操作 92 金融机构或中间网络设施找不到或无法达到 96 系统异常
	 * 98 银联收不到发卡行应答 99 PIN 格式错
	 */

	/**
	 * 00 承兑或交易成功
	 */
	public final static String RC_SUCCESS = "00";
	/**
	 * 11 无效交易
	 */
	public final static String RC_INVALID_TRANS = "11";
	/**
	 * 71 已超单笔消费限制
	 */
	public final static String RC_OverOne_Paid = "71";

	/**
	 * 72 已超日消费次数限制
	 */
	public final static String RC_DayNum_Paid = "72";

	/**
	 * 73 已超日消费金额限制
	 */
	public final static String RC_DayAmount_Paid = "73";

	/**
	 * 74 不允许充值交易
	 */
	public final static String RC_No_Deposit = "74";

	/**
	 * 75 未设置商户充值归属销售机构
	 */
	public final static String RC_No_DepositBranchNo = "75";

	/**
	 * 76 充值金额超过发卡商或商户单笔充值额度上限参数
	 */
	public final static String RC_DepositAmountOverLimit = "76";

	/**
	 * 77 充值金额超过发卡商或商户周期累计充值额度上限参数
	 */
	public final static String RC_DepositAmountOverCycleLimit = "77";

	/**
	 * 15 无此发卡行
	 */
	public final static String RC_ISSUE = "15";

	/**
	 * 14 无效卡号
	 */
	public final static String RC_INVALID = "14";

	/**
	 * 22 怀疑操作有误
	 */
	public final static String RC_SUSPECT = "22";

	/**
	 * 54 过期的卡
	 */
	public final static String RC_EXPIRED = "54";

	/**
	 * 62 受限制的卡
	 */
	public final static String RC_LIMIT = "62";

	/**
	 * 57 不允许持卡人进行的交易
	 */
	public final static String RC_CARDHOLDER_LIMIT = "57";

	/**
	 * 41 丢失卡
	 */
	public final static String RC_LOSSED = "41";

	/**
	 * 12 卡已经锁定
	 */
	public final static String RC_LOCKED = "12";

	/**
	 * 13 卡余额非法
	 */
	public final static String RC_MAC = "13";

	/**
	 * 30 格式错误
	 */
	public final static String RC_PARAMETER = "30";

	/**
	 * 55 不正确的PIN
	 */
	public final static String RC_PWDERR = "55";

	/**
	 * 21 新密码错
	 */
	public final static String RC_NPWDERR = "21";

	/**
	 * 51 无足够的存款
	 */
	public final static String RC_LACK = "51";

	/**
	 * 64 原始金额不正确
	 */
	public final static String RC_DISCORD = "64";

	/**
	 * 32 日期不符
	 */
	public final static String RC_TRANDATE = "32";

	/**
	 * 90 日期切换正在处理
	 */
	public final static String RC_DISTRAN = "90";

	/**
	 * 13 无效金额
	 */
	public final static String RC_AMOUNT = "13";

	/**
	 * 25 未能找到文件上记录
	 */
	public final static String RC_NONEXIST = "25";

	/**
	 * 50 对帐文件不存在或格式非法
	 */
	public final static String RC_ACCCHKFILE = "50";

	/**
	 * 03 无效商户
	 */
	public final static String RC_NOMERCHANT = "03";

	/**
	 * 97 POS 终端号找不到
	 */
	public final static String RC_NOTERMINAL = "97";

	/**
	 * 96 系统错误
	 */
	public final static String RC_SYS = "96";

	/**
	 * DB 数据库错
	 */
	public final static String RC_DBERR = "DB";

	/**
	 * A0 MAC 校验错
	 */
	public final static String RC_DIGEST = "A0";

	/**
	 * 99 请求包格式错
	 */
	public final static String RC_PACKET = "99";

	/**
	 * 94 重复交易
	 */
	public final static String RC_REQSEQNO = "94";
}
